const http = require('http');
const server = http.createServer();
const Controller = require('./controller')
const schedule = require('./schedule')
const path = require('path');
const UPLOAD_DIR = path.resolve(__dirname, 'target');

const controller = new Controller()

// 开启/关闭定时清理任务
// schedule.start(UPLOAD_DIR)


//启动 nodemon .\index.js
 

server.on("request", async (req, res) => {
    // res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8080'); // 或者写http://127.0.0.1:8080
    // res.setHeader('Access-Control-Allow-Headers', '*');

    //设置允许跨域的域名，*代表允许任意域名跨域
    res.setHeader("Access-Control-Allow-Origin","*");
    //允许的header类型
    res.setHeader("Access-Control-Allow-Headers","*");
    //跨域允许的请求方式 
    res.setHeader("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");

    // 发送POST请求时，也会发送OPTIONS请求
    /*
    如果使用POST发送请求内容类型不是application/x-www-form-urlencoded，
    multipart/form-data或text/plain的请求数据，
    则该请求被预检。
    */
    // 要添加以下代码，回应所有的OPTIONS请求，不然会接收不到post的数据
    // Preflighted Requests是CORS中一种透明服务器验证机制。
    // 预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头，
    // 其目的就是为了判断实际发送的请求是否是安全的。
    if (req.method === 'OPTIONS') {// 拦截到'OPTIONS'请求的允许通行
        res.status = 200;
        res.end('Post请求所带的预检请求OPTIONS允许访问');
        return;
    }

    // 测试 /hello
    if (req.url === '/hello') {
        res.end('hello world /hello ');
        return ;
    }

    if (req.url === '/upload') {
        console.log('uploaduploaduploaduploadupload');
      
        //后端模拟报错
        // if(Math.random()<0.85){
        //     res.statusCode=500
        //     res.end('概率报错了')
        //     return 
        //   }
        
        //上传切片处理 
        await controller.handleFormData(req, res);
        return ;
    }

    if (req.url === '/merge') { //处理合并
        await controller.handleMerge(req, res);
        return ;
    }

    if (req.url === '/verify') {
        // console.log(req);
        // res.end('verify Finish~');
        await controller.handleVerifyUpload(req, res);
    }

})

server.listen(3001, () => {
    console.log("正在监听3001端口");
})






